<!doctype html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/_mozilla/bluetooth/bluetooth-helpers.js"></script>
<script>
'use strict';
promise_test(() => {
    window.testRunner.setBluetoothMockDataSet(adapter_type.heart_rate);
    return window.navigator.bluetooth.requestDevice({
        filters: [{services: [heart_rate.name]}],
        optionalServices: [generic_access.name]
    })
    .then(device => {
        return device.gatt.connect()
        .then(gattServer => Promise.all([
            gattServer.getPrimaryService(generic_access.alias),
            gattServer.getPrimaryService(generic_access.name),
            gattServer.getPrimaryService(generic_access.uuid)]))
        .then(services => {
            services.forEach(service => {
                assert_equals(service.uuid, generic_access.uuid,
                              'Service UUID should be the same as requested UUID.');
                assert_true(service.isPrimary,
                            'getPrimaryService should return a primary service.');
                assert_equals(service.device, device,
                              'Service device should be the same as device.');
            });
        });
    });
}, 'Request for service. Should return right service');
</script>
